﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TechControl.BD;
using System.Data.SqlClient;

namespace TechControl.Presentation
{
    public partial class frm_listEquipamentoEntregue : frm_default
    {
        BindingSource bs = new BindingSource();

        public frm_listEquipamentoEntregue()
        {
            InitializeComponent();
        }

        //chama o método que carrega itens no dataGrid
        private void frm_listEquipamentoEntregue_Load(object sender, EventArgs e)
        {
            rbd_todos.Checked = true;
            loadDadosOnGrid();
        }

        //fecha a tela e volta para a anterior.
        private void bt_sair_Click(object sender, EventArgs e)
        {
            this.closeForm();
        }

        //método responsável por popular o dataGrid.
        public void loadDadosOnGrid()
        {
            BaseDB ba = new BaseDB();
            try
            {
                ba.open();

                SqlCommand command = new SqlCommand("Select * from tb_item_entregue", ba.conn);
                //cria um adapter para preencher um data set.
                SqlDataAdapter da = new SqlDataAdapter(command);
                //define um objeto dataSet
                DataSet ds = new DataSet();
                da.Fill(ds);

                //atribui o dataset ao DataSource do BindingSource
                bs.DataSource = ds;

                //atribui o BindingSource ao BindingNavigator
                bs.DataMember = ds.Tables[0].TableName;

                //Atribui o BindingSource ao DataGridView
                dg_itensEntregues.DataSource = bs;
            }
            catch (Exception)
            {
                MessageBox.Show("Não foi possivél carregar os dados!", "Erro");
            }
            finally
            {
                ba.close();
            }
        }

        //chama método que efetua o filtro de acordo com o parãmetro informado.
        private void bt_filtrar_Click(object sender, EventArgs e)
        {
            activeFilter();
        }

        //método responsável por filtrar os valores de acordo com o valor selecionado.
        private void activeFilter()
        {
            if (rdb_imei.Checked == true)
            {
                if (txt_imei.Text == "")
                {
                    MessageBox.Show("Insira um IMEI para continuar!", "Filtro por IMEI");
                }
                else
                {
                    string imei = txt_imei.Text;
                    bs.Filter = "imei like '%" + imei + "%'";
                }
            }

            else if (rdb_serial.Checked == true)
            {
                if (txt_serial.Text == "")
                {
                    MessageBox.Show("Insira um Serial para continuar!", "Filtro por Serial");
                }
                else
                {
                    string serial = txt_serial.Text;
                    bs.Filter = "serial like '%" + serial + "%'";
                }
            }

            else if (rdb_funcionario.Checked == true)
            {
                if (txt_nomeFunc.Text == "")
                {
                    MessageBox.Show("Insira um nome de funcionário para continuar!", "Filtro por Nome de Funcionário");
                }
                else
                {
                    string nome = txt_nomeFunc.Text;
                    bs.Filter = "nome like '%" + nome + "%'";
                }
            }

            else if (rdb_date.Checked == true)
            {
                if (mtxt_data.Text == "")
                {
                    MessageBox.Show("Insira uma data para continuar!", "Filtro por Data");
                }
                else
                {
                    string data = mtxt_data.Text;
                    bs.Filter = "DATA_ATRIBUICAO like '%" + data + "%'";
                }
            }

            else if (rbd_todos.Checked == true)
            {
                bs.RemoveFilter();
            }
        }

        //desativa os filtros.
        private void rbd_todos_Click(object sender, EventArgs e)
        {
            clearText();
            txt_serial.Enabled = false;
            txt_nomeFunc.Enabled = false;
            txt_imei.Enabled = false;
        }

        //limpa os campos text.
        private void clearText()
        {
            txt_imei.Text = "";
            txt_serial.Text = "";
            txt_nomeFunc.Text = "";
            mtxt_data.Text = "";
        }

        //habilita filtro por imei
        private void rdb_imei_Click(object sender, EventArgs e)
        {
            clearText();
            txt_serial.Enabled = false;
            txt_nomeFunc.Enabled = false;
            mtxt_data.Enabled = false;
            txt_imei.Enabled = true;
            txt_imei.Focus();
        }

        //habilita filtro por serial
        private void rdb_serial_Click(object sender, EventArgs e)
        {
            clearText();
            txt_serial.Enabled = true;
            txt_serial.Focus();
            txt_nomeFunc.Enabled = false;
            mtxt_data.Enabled = false;
            txt_imei.Enabled = false;
        }

        //habilita filtro por nome de funcionário.
        private void rdb_funcionario_Click(object sender, EventArgs e)
        {
            clearText();
            txt_serial.Enabled = false;
            txt_nomeFunc.Enabled = true;
            mtxt_data.Enabled = false;
            txt_nomeFunc.Focus();
            txt_imei.Enabled = false;
        }

        //habilita filtro por data.
        private void rdb_date_Click(object sender, EventArgs e)
        {
            clearText();
            txt_serial.Enabled = false;
            txt_nomeFunc.Enabled = false;
            mtxt_data.Enabled = true;
            mtxt_data.Focus();
            txt_imei.Enabled = false;
        }

        //ativado na leitura pelo leitor ou pelo evento enter.
        private void txt_imei_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_imei.Text == "")
                {
                    MessageBox.Show("Insira um IMEI para continuar", "Busca por IMEI");
                    txt_imei.Focus();
                }
                else
                {
                    activeFilter();
                }
            }
        }

        //ativado na leitura pelo leitor ou pelo evento enter.
        private void txt_serial_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_serial.Text == "")
                {
                    MessageBox.Show("Insira um Serial para continuar", "Busca por Serial");
                    txt_serial.Focus();
                }
                else
                {
                    activeFilter();
                }
            }
        }

        //ativado na leitura pelo leitor ou pelo evento enter.
        private void txt_nomeFunc_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_nomeFunc.Text == "")
                {
                    MessageBox.Show("Insira um nome para continuar", "Busca por Nome");
                    txt_nomeFunc.Focus();
                }
                else
                {
                    activeFilter();
                }
            }
        }

        //ativado na leitura pelo leitor ou pelo evento enter.
        private void mtxt_data_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (mtxt_data.Text == "")
                {
                    MessageBox.Show("Insira uma data para continuar", "Busca por Data");
                    mtxt_data.Focus();
                }
                else
                {
                    activeFilter();
                }
            }
        }

        //chama método que preenche o termo de devolução.
        private void bt_imprimirTermo_Click(object sender, EventArgs e)
        {
            imprimirTermo();
        }

        //método que preenche termo de devolução do item.
        private void imprimirTermo()
        {
            Int64 codItem = Int64.Parse(dg_itensEntregues.CurrentRow.Cells[0].Value.ToString());
            Int64 codFunc = Int64.Parse(dg_itensEntregues.CurrentRow.Cells[1].Value.ToString());
            string nome = (dg_itensEntregues.CurrentRow.Cells[2].Value.ToString());
            Int64 codEquip = Int64.Parse(dg_itensEntregues.CurrentRow.Cells[3].Value.ToString());
            string serial = (dg_itensEntregues.CurrentRow.Cells[4].Value.ToString());
            string imei = (dg_itensEntregues.CurrentRow.Cells[5].Value.ToString());
            string marca = (dg_itensEntregues.CurrentRow.Cells[6].Value.ToString());
            string modelo = (dg_itensEntregues.CurrentRow.Cells[7].Value.ToString());
            string descEquip = (dg_itensEntregues.CurrentRow.Cells[8].Value.ToString());
            string rg = (dg_itensEntregues.CurrentRow.Cells[10].Value.ToString());
            string pat = (dg_itensEntregues.CurrentRow.Cells[11].Value.ToString());
            string empresa = (dg_itensEntregues.CurrentRow.Cells[12].Value.ToString());
            string data = DateTime.Now.ToString("dd/MM/yyyy");
            string dia = DateTime.Now.ToString("dd");
            string ano = DateTime.Now.ToString("yyyy");

            string matrix = Application.StartupPath + "\\DEVOLUCAO.doc";

            GeraTermos.getInstance().preencherDevolucao(matrix, nome, rg, data, descEquip, marca, modelo, pat, empresa, serial, imei, dia, ano);
        }
    }
}
